PHP、MySQL分库分表中间件、支持协程

您所在的位置:网站首页 中间件 php PHP、MySQL分库分表中间件、支持协程

PHP、MySQL分库分表中间件、支持协程

2024-07-11 20:23| 来源: 网络整理| 查看: 265

PHP、MySQL分库分表中间件,需要依赖PDO,PHP分库分表,支持协程 说明

(1)已支持协程,使用协程必须在主进程开启 \Swoole\Runtime::enableCoroutine();

(2)支持分片规则自定义,支持实现复杂的分片,分片规则是依赖输入的where条件或者insert插入的数据来的

安装

composer require lys/php-sharding-pdo

项目地址 (请查看如下地址,获取最新文档)

https://github.com/1107012776/PHP-Sharding-PDO

自动化测试

(1)先要配置tests/Config/.env ,测试环境数据库链接

.env文件

[database] host=localhost username=root password=testpassword

(2)然后执行如下脚本

非协程

php vendor/bin/phpunit tests/IntegrationTest.php --filter testExecStart

协程

php vendor/bin/phpunit tests/IntegrationCoroutineTest.php --filter testExecStart

注意

(1)协程模式必须在主进程开启这个东西,否则会出现死锁

\Swoole\Runtime::enableCoroutine();

(2)协程中不能使用pdo长链接,在高并发的情况下,会出现如下异常

PHP Fatal error: Uncaught Swoole\Error: Socket#30 has already been bound to another coroutine#2, reading of the same socket in coroutine#4 at the same time is not allowed

(3)Replace into自增主键,并发量大的时候可能出现返回false和死锁的,所以不适合高并发项目的使用,高并发,请使用雪花算法等一些分布式主键方案

(4)非协程情况下,并且常驻内存,如workerman框架请使用如下代码释放上下文,上下文管理为单例,所以需要该方法释放单例实例,一般是在一个请求结束,或者一个任务结束,释放完上下文,请重新new Model实例才行,因为释放上下文,清理了上下文中的PDO实例,方法如下:



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3